উদাহরণ সহ Error Handling

Java Technologies - আরএক্সজাভা (RxJava) - Error Handling
179

আরএক্সজাভা (RxJava) তে ডেটা স্ট্রিম পরিচালনার সময় বিভিন্ন ধরনের এরর (Error) ঘটতে পারে। এরর হ্যান্ডলিং একটি গুরুত্বপূর্ণ বিষয়, যা আপনাকে কার্যকরী ও স্থিতিশীল অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। RxJava তে এরর হ্যান্ডলিং করার জন্য বেশ কিছু অপারেশন এবং কৌশল রয়েছে, যা আমরা উদাহরণের মাধ্যমে ব্যাখ্যা করব।


RxJava তে Error Handling এর প্রধান কৌশলসমূহ

1. onError Callback

onError হল একটি কলব্যাক যা যখন কোনো এরর ঘটে তখন ট্রিগার হয়। আপনি এই কলব্যাকের মাধ্যমে এরর হ্যান্ডলিং করতে পারেন। এটি Observable এর মধ্যে ঘটে এমন কোনো ব্যতিক্রম বা ত্রুটি (exception) ক্যাচ (catch) করতে ব্যবহৃত হয়।

2. onErrorReturn

onErrorReturn অপারেশনটি ব্যবহার করে, আপনি একটি বিকল্প মান প্রদান করতে পারেন যখন কোনো এরর ঘটে। এটি Observable এ যদি কোনো এরর ঘটে, তাহলে ডিফল্ট মান ফেরত দেয়।

3. onErrorResumeNext

onErrorResumeNext অপারেশনটি তখন ব্যবহার হয় যখন একটি Observable তে এরর ঘটে, এবং আপনি এটি এড়িয়ে অন্য একটি Observable থেকে ডেটা নেওয়ার সিদ্ধান্ত নেন।


উদাহরণ সহ Error Handling

এখানে একটি উদাহরণ দেওয়া হলো যেখানে আমরা RxJava তে এরর হ্যান্ডলিং করি:

import io.reactivex.rxjava3.core.Observable;

public class RxJavaErrorHandlingExample {
    public static void main(String[] args) {
        
        // একটি Observable তৈরি করা হচ্ছে যা একটি ভুল (Exception) তৈরি করবে
        Observable<Integer> numbers = Observable.create(emitter -> {
            emitter.onNext(1);
            emitter.onNext(2);
            emitter.onError(new RuntimeException("Something went wrong!"));
            emitter.onNext(3); // এই অংশটি কখনও execute হবে না কারণ এরর হয়ে গেছে
        });

        // Error Handling with onErrorReturn
        numbers
            .onErrorReturn(throwable -> {
                System.out.println("Error occurred: " + throwable.getMessage());
                return -1; // error হলে -1 ফেরত দিবে
            })
            .subscribe(
                item -> System.out.println("Item: " + item),
                throwable -> System.out.println("Error: " + throwable),  // এই অংশটি এখন আর কাজ করবে না
                () -> System.out.println("Completed!")
            );
    }
}

এই উদাহরণটির ব্যাখ্যা

  1. প্রথমে একটি Observable তৈরি করা হয়েছে যা প্রথম দুটি ভ্যালু প্রেরণ করবে (onNext) এবং তারপরে একটি RuntimeException ঘটাবে (onError), এর ফলে পরবর্তী onNext কলটি কার্যকরী হবে না।
  2. onErrorReturn ব্যবহার করে, যদি কোনো এরর ঘটে, তাহলে -1 মানটি ফেরত দেয়া হবে এবং এরর বার্তা প্রদর্শিত হবে।
  3. subscribe মেথডে দুটি কলব্যাক (যেমন onNext, onError, এবং onComplete) ব্যবহার করা হয়েছে, তবে এখানে এরর ঘটবে বলে onError কলব্যাকটি কার্যকরী হবে।

onErrorResumeNext এর উদাহরণ

এখন একটি উদাহরণ দিচ্ছি যেখানে onErrorResumeNext অপারেশনটি ব্যবহার করা হয়েছে। এখানে যদি কোনো ত্রুটি ঘটে, তাহলে অন্য একটি Observable এর ডেটা ব্যবহার করা হবে।

import io.reactivex.rxjava3.core.Observable;

public class RxJavaOnErrorResumeNextExample {
    public static void main(String[] args) {
        
        // একটি Observable তৈরি করা হচ্ছে যা একটি ভুল (Exception) তৈরি করবে
        Observable<Integer> numbers = Observable.create(emitter -> {
            emitter.onNext(1);
            emitter.onNext(2);
            emitter.onError(new RuntimeException("Something went wrong!"));
        });

        // Error Handling with onErrorResumeNext
        Observable<Integer> fallback = Observable.just(10, 20, 30);

        numbers
            .onErrorResumeNext(fallback)  // এরর হলে fallback Observable চালু হবে
            .subscribe(
                item -> System.out.println("Item: " + item),
                throwable -> System.out.println("Error: " + throwable),
                () -> System.out.println("Completed!")
            );
    }
}

ব্যাখ্যা

  1. numbers নামের একটি Observable প্রথমে কিছু ভ্যালু পাঠায়, তারপর একটি ত্রুটি তৈরি করে।
  2. onErrorResumeNext ব্যবহার করে, ত্রুটি ঘটলে fallback নামের আরেকটি Observable চালু হবে, যা 10, 20, 30 পাঠাবে।
  3. subscribe মেথডে, এখন যদি কোনো ত্রুটি ঘটে, তাহলে প্রথম Observable এর পরিবর্তে fallback Observable এর ডেটা ব্যবহার করা হবে।

উপসংহার

RxJava তে এরর হ্যান্ডলিং অত্যন্ত সহজ এবং শক্তিশালী। onError, onErrorReturn, এবং onErrorResumeNext অপারেশনগুলির মাধ্যমে আপনি আপনার অ্যাসিঙ্ক্রোনাস স্ট্রিমে এররগুলো সুন্দরভাবে হ্যান্ডল করতে পারেন। এগুলো ব্যবহারের মাধ্যমে আপনার কোডে স্থিতিশীলতা এবং ইউজার-ফ্রেন্ডলি অভিজ্ঞতা নিশ্চিত করা সম্ভব।


Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...